xl: fixes for do_daemonize
authorRoger Pau Monne <roger.pau@citrix.com>
Fri, 22 Nov 2013 11:54:09 +0000 (12:54 +0100)
committerIan Campbell <ian.campbell@citrix.com>
Tue, 26 Nov 2013 10:57:21 +0000 (10:57 +0000)
Fix usage of CHK_ERRNO in do_daemonize and also remove the usage of a
bogus for(;;).

Coverity-ID: 1130516 and 1130520
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Cc: Ian Jackson <Ian.Jackson@eu.citrix.com>
tools/libxl/xl_cmdimpl.c

index bdb4be3600bd053f22f83a9910d055230769f8bb..c5677cd175d006cda0033c5179cb5431ddfacf60 100644 (file)
@@ -411,14 +411,14 @@ static int do_daemonize(char *name)
 
     child1 = xl_fork(child_waitdaemon);
     if (child1) {
-        for (;;) {
-            got_child = xl_waitpid(child_waitdaemon, &status, 0);
-            if (got_child == child1) break;
+        got_child = xl_waitpid(child_waitdaemon, &status, 0);
+        if (got_child != child1) {
             assert(got_child == -1);
-            perror("failed to wait for daemonizing child");
+            LOG("failed to wait for daemonizing child: %s", strerror(errno));
             ret = ERROR_FAIL;
             goto out;
         }
+
         if (status) {
             libxl_report_child_exitstatus(ctx, XTL_ERROR,
                        "daemonizing child", child1, status);
@@ -437,16 +437,15 @@ static int do_daemonize(char *name)
         exit(-1);
     }
 
-    CHK_ERRNO(( logfile = open(fullname, O_WRONLY|O_CREAT|O_APPEND,
-                               0644) )<0);
+    CHK_ERRNO(logfile = open(fullname, O_WRONLY|O_CREAT|O_APPEND, 0644));
     free(fullname);
 
-    CHK_ERRNO(( nullfd = open("/dev/null", O_RDONLY) )<0);
+    CHK_ERRNO(nullfd = open("/dev/null", O_RDONLY));
     dup2(nullfd, 0);
     dup2(logfile, 1);
     dup2(logfile, 2);
 
-    CHK_ERRNO(daemon(0, 1) < 0);
+    CHK_ERRNO(daemon(0, 1));
 
 out:
     return ret;